/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package AlmacenamientoT;

import java.io.*;
import java.util.ArrayList;
import java.util.List;

/**
 *
 * @author MIGUEL
 */
public class Catalogo implements java.io.Serializable{
    private String archivoCatalogo;
    private java.util.Map<String,EntradaCatalogo> entradas;
    private int numeroDeTablas;
    
    
    public Catalogo(String archivoCatalogo){
        this.archivoCatalogo = archivoCatalogo;
        entradas = new java.util.Hashtable<String, EntradaCatalogo>();
        numeroDeTablas=0;
    }

    public int getNumeroDeTablas() {
        return numeroDeTablas;
    }
    
    public java.util.Map<String,EntradaCatalogo> getEntradas(){
        return entradas;
    }
    
    public void crearNuevaEntrada(EntradaCatalogo entrada)
        throws IllegalArgumentException{
        if (!existeTabla(entrada.getNombreTabla())){
            entradas.put(entrada.getNombreTabla(), entrada);
            numeroDeTablas++;
        }
        else{
            throw new IllegalArgumentException("Tabla: "+entrada.getNombreTabla()+" ya existe.");
        }
    }
    public void EliminarEntrada(String nombreTabla)
        throws IllegalArgumentException{
        if (existeTabla(nombreTabla)){
            entradas.remove(nombreTabla);
            
            numeroDeTablas--;
        }
        else{
            throw new IllegalArgumentException("La tabla no existe");
        }
    }
    
    
    public void ActualizarEntrada(String nombreAnterioTabla,String nuevoNombreTabla)
        throws IllegalArgumentException{
        if (existeTabla(nombreAnterioTabla)){
            
            EntradaCatalogo e1 = entradas.get(nombreAnterioTabla);
            EliminarEntrada(nombreAnterioTabla);
            e1.setNombreTabla(nuevoNombreTabla);
            crearNuevaEntrada(e1);
            //entradas.remove(nombreTabla);
            
        }
        else{
            throw new IllegalArgumentException("La tabla no existe");
        }
    }
    
    
    protected boolean existeTabla(String nombreTabla){
        return (entradas.get(nombreTabla) != null);
    }
    
    @Override
    public String toString(){
        return "Catalogo: "+numeroDeTablas+" tablas, Entradas: \n"+ "\t"+entradas.toString();
           
    }
    
}

